{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 学习曲线"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "含义：随着训练样本的逐渐增多，算法训练出的模型的表现能力。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(666)\n",
    "x = np.random.uniform(-3.0, 3.0, size=100)\n",
    "X = x.reshape(-1, 1)\n",
    "y = 0.5 * x**2 + x + 2 + np.random.normal(0, 1, size=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,7))\n",
    "plt.scatter(x, y)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 使用学习曲线"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "绘制学习曲线，实际上就是：\n",
    "- 将样本一条一条地送进算法\n",
    "- 每传入一条样本，就根据这条样本和之前已经传进来的样本使用模型进行拟合\n",
    "- 再对所有已送进来的样本进行预测并计算均方误差\n",
    "- 利用这个模型对测试数据集进行预测并计算均方误差。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(75, 1)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制学习曲线，实际上就是将样本一部分一部分地送给算法，看看模型的准确性\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.metrics import mean_squared_error\n",
    "\n",
    "train_score = []\n",
    "test_score = []\n",
    "\n",
    "for i in range(1, 76):\n",
    "    lin_reg = LinearRegression()\n",
    "    lin_reg.fit(X_train[:i], y_train[:i])\n",
    "    \n",
    "    y_train_predict = lin_reg.predict(X_train[:i])\n",
    "    train_score.append(mean_squared_error(y_train[:i], y_train_predict[:i]))\n",
    "    \n",
    "    y_test_predict = lin_reg.predict(X_test)\n",
    "    test_score.append(mean_squared_error(y_test, y_test_predict))\n",
    "\n",
    "# 为了使曲线更加平滑，我们使用均方根误差(RMSE)绘制\n",
    "plt.figure(figsize=(10,7))\n",
    "plt.plot([i for i in range(1, 76)], np.sqrt(train_score), label='train')\n",
    "plt.plot([i for i in range(1, 76)], np.sqrt(test_score), label='test')\n",
    "plt.legend()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_learning_curve(algo, X_train, X_test, y_train, y_test):\n",
    "    \n",
    "    train_score = []\n",
    "    test_score = []\n",
    "\n",
    "    for i in range(1, len(X_train)+1):\n",
    "        algo.fit(X_train[:i], y_train[:i])\n",
    "\n",
    "        y_train_predict = algo.predict(X_train[:i])\n",
    "        train_score.append(mean_squared_error(y_train[:i], y_train_predict[:i]))\n",
    "\n",
    "        y_test_predict = algo.predict(X_test)\n",
    "        test_score.append(mean_squared_error(y_test, y_test_predict))\n",
    "\n",
    "    # 为了使曲线更加平滑，我们使用均方根误差(RMSE)绘制\n",
    "    plt.figure(figsize=(10,7))\n",
    "    plt.plot([i for i in range(1, len(X_train)+1)], np.sqrt(train_score), label='train')\n",
    "    plt.plot([i for i in range(1, len(X_train)+1)], np.sqrt(test_score), label='test')\n",
    "    plt.legend()\n",
    "    plt.axis([0, len(X_train)+1, 0, 4])\n",
    "    plt.show()\n",
    "    \n",
    "plot_learning_curve(LinearRegression(), X_train, X_test, y_train, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上图两条线距离X轴都比较远，属于欠拟合的情况"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用多项式回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "\n",
    "def PolynomialRegression(degree):\n",
    "    return Pipeline([\n",
    "        ('poly', PolynomialFeatures(degree=degree)),\n",
    "        ('std_scaler', StandardScaler()),\n",
    "        ('lin_reg', LinearRegression())\n",
    "        ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "poly_reg2 = PolynomialRegression(degree=2)\n",
    "plot_learning_curve(poly_reg2, X_train, X_test, y_train, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上图两条线离X轴较近，属于恰好的情况。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看出训练数据集和测试数据集的均方误差一开始都是相差非常大，随着样本数的不断增加，逐渐接近并保持在某一个范围之内。而就这个数据集而言，多项式回归训练数据集和测试数据集的均方根误差之差，很明显比线性回归的均方根误差之差小，因此可以判断出多项式回归的拟合效果更好一些"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAAGfCAYAAAB7g1e6AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nO3deZwdVZ3//9fp7XZ6y9LpLCSBJJCwCgECgiiyCQmb+AUVFbdxZHRGwe93HAecGR0d5/fFme+4MG4DgqIsLuACCIoKCCpEOiGEQFjCljTZOksnvaT38/ujbkLT6e57O73cXl7Px+M+qupW3bqfrkc6eefUqXNCjBFJkiTtn7xcFyBJkjSaGaYkSZIGwDAlSZI0AIYpSZKkATBMSZIkDYBhSpIkaQCyDlMhhPwQwuMhhLt72JcKIfw4hLA2hLAshDB3MIuUJEkaqfrTMnUlsKaXfR8BdsQYDwG+Cnx5oIVJkiSNBlmFqRDCbOA84Lu9HPJ24Kb0+u3AmSGEMPDyJEmSRraCLI/7GvAZoLyX/bOA9QAxxvYQwk6gEtja9aAQwuXA5QClpaXHH3bYYfueqa0Jap+FKQdDcUWW5UlSBi31sG0tTF0IRaW5rkbSKLN8+fKtMcaqnvZlDFMhhPOBLTHG5SGE03o7rIf39pmnJsZ4HXAdwOLFi2N1dfW+n3p1OVx/Brz3v2HhOZnKk6TsvPAA/PAi+PCNcNDJua5G0igTQnilt33Z3OY7BbgwhPAy8CPgjBDCzd2OqQHmpL+sAJgIbN+vaiVJkkaRjGEqxnh1jHF2jHEucClwf4zxsm6H3Ql8ML1+SfoYZ1CWJEljXrZ9pvYRQvgiUB1jvBO4AfhhCGEtSYvUpYNUnyRJ0ojWrzAVY3wQeDC9/rku7zcD7xzMwiRJ0sjR1tZGTU0Nzc3NuS5lSBUXFzN79mwKCwuz/sx+t0xJkqTxo6amhvLycubOnctYHf0oxsi2bduoqalh3rx5WX/O6WQkSVJGzc3NVFZWjtkgBRBCoLKyst+tb4YpSeOMz8ZI+2ssB6k99udnNExJGh/GwT8CknLDMCVJkka8uro6vvWtb/X7c+eeey51dXVDUNFrDFOSJGnE6y1MdXR09Pm5e+65h0mTJg1VWYBP80mSpFHgqquu4oUXXmDRokUUFhZSVlbGzJkzWblyJU8//TQXXXQR69evp7m5mSuvvJLLL78cgLlz51JdXU1DQwNLly7lzW9+M3/+85+ZNWsWv/zlL5kwYcKAazNMSZKkfvnCXU/x9IZdg3rOIw6o4PMXHNnr/muuuYbVq1ezcuVKHnzwQc477zxWr169dwiDG2+8kSlTprB7925OOOEELr74YiorK193jueff57bbruN66+/nne9613ccccdXHZZ90ld+s8wJUmSRp0TTzzxdWNBXXvttfz85z8HYP369Tz//PP7hKl58+axaNEiAI4//nhefvnlQanFMCVJkvqlrxak4VJaWrp3/cEHH+R3v/sdjzzyCCUlJZx22mk9jhWVSqX2rufn57N79+5BqcUO6JLGF+dgl0al8vJy6uvre9y3c+dOJk+eTElJCc888wyPPvrosNZmy5SkccJxpqTRrLKyklNOOYWjjjqKCRMmMH369L37lixZwne+8x2OPvpoDj30UE466aRhrc0wJUmSRoVbb721x/dTqRT33ntvj/v29IuaOnUqq1ev3vv+pz/96UGry9t8kiRJA2CYkiRJGgDDlCRJ0gAYpiRJkgbAMCVJkjQAhilJ44zjTEkaXIYpSZI04tXV1fGtb31rvz77ta99jaampkGu6DWGKUnjQ3DQTmk0G8lhykE7JUnSiHfVVVfxwgsvsGjRIt72trcxbdo0fvKTn9DS0sI73vEOvvCFL9DY2Mi73vUuampq6Ojo4F/+5V/YvHkzGzZs4PTTT2fq1Kk88MADg16bYUqSJPXPvVfBpicH95wz3gBLr+l19zXXXMPq1atZuXIl9913H7fffjt/+ctfiDFy4YUX8tBDD1FbW8sBBxzAr371KyCZs2/ixIl85Stf4YEHHmDq1KmDW3Oat/kkSdKoct9993Hfffdx7LHHctxxx/HMM8/w/PPP84Y3vIHf/e53/OM//iMPP/wwEydOHJZ6bJmSJEn900cL0nCIMXL11VfzN3/zN/vsW758Offccw9XX301Z599Np/73OeGvB5bpiRJ0ohXXl5OfX09AOeccw433ngjDQ0NALz66qts2bKFDRs2UFJSwmWXXcanP/1pVqxYsc9nh4ItU5IkacSrrKzklFNO4aijjmLp0qW8973v5eSTTwagrKyMm2++mbVr1/IP//AP5OXlUVhYyLe//W0ALr/8cpYuXcrMmTPtgC5JAxYdtFMa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\n",
      "text/plain": [
       "<Figure size 720x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "poly_reg3 = PolynomialRegression(degree=20)\n",
    "plot_learning_curve(poly_reg3, X_train, X_test, y_train, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "上图在训练数据集上进行预测出现了过拟合现象，而在测试数据集上出现了欠拟合的情况。原因在于模型的复杂度提升了，模型试着去拟合训练数据集上尽可能多的点，因此出现了上述现象。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
